package com.jsmtr.rms.service;

import java.util.List;
import java.util.Map;

import com.jsmtr.rms.entity.*;
import org.springframework.web.multipart.MultipartFile;

public interface IDoMSService {

    /**
     * 获得某面试计划中的应聘者
     *
     * @param fid 招聘流程ID
     * @param uid 应聘者ID
     * @return DoMSUser
     */
    DoMSUser getMsUser(String fid, String uid) throws Exception;

    /**
     * 获得某素质测试中的应聘者
     *
     * @param fid 招聘流程ID
     * @param uid 应聘者ID
     * @return DoMSUser
     */
    DoSSUser getSsUser(String fid, String uid) throws Exception;

    /*    
     * 根据身份证号获得某面试计划中的应聘者
     * @author cyx  
     * @date 2018/7/31 10:48
     * @param fid
     * @param uid
     * @return com.jsmtr.rms.entity.DoMSUser  
     */ 
    DoMSUser getMsUserByCardNo(String fid, String cardNo) throws Exception;

    /**
     * 获得某面试计划中的应聘者
     *
     * @param id ID
     * @return DoMSUser
     */
    DoMSUser getMsUser(String id) throws Exception;

    /**
     * 获得面试安排信息
     *
     * @param uids 应聘者ID集合
     * @param fid  招聘流程ID
     * @return List<DoBSUser>
     */
    List<DoMSUser> getMsUsers(String[] uids, String fid) throws Exception;


    /**
     * 获得面试安排信息
     *
     * @param uids        应聘者ID集合
     * @param fid         招聘流程ID
     * @param recruittype 招聘方式
     * @return List<DoBSUser>
     */
    List<Object[]> getMsUser(String[] uids, String fid, int recruittype) throws Exception;

    /**
     * 获得面试安排信息
     *
     * @param uids        应聘者ID集合
     * @param fid         招聘流程ID
     * @param projectInfo 招聘方案
     * @return List<DoBSUser>
     */
    List<Object[]> getMsUser(String[] uids, String fid, ProjectInfo projectInfo) throws Exception;

    /**
     * 获得素质测试安排信息
     *
     * @param uids        应聘者ID集合
     * @param fid         招聘流程ID
     * @param projectInfo 招聘方案
     * @return List<DoSSUser>
     */
    List<Object[]> getSsUser(String[] uids, String fid, ProjectInfo projectInfo) throws Exception;
    /**
     * 获得面试安排信息
     *
     * @param fid         招聘流程ID
     * @param recruittype 招聘方式
     * @return
     * @throws Exception
     */
    List<Object[]> getMsUser(String fid, int recruittype) throws Exception;

    /**
     * 获得面试安排信息不需要面试官
     *
     * @param fid         招聘流程ID
     * @param recruittype 招聘方式
     * @return
     * @throws Exception
     */
    List<Object[]> getMsUserNoExaminer(String fid, int recruittype) throws Exception;
    /**
     * 获得面试评价表
     *
     * @param gid 计划编排分组ID
     * @return List<DoMSEvaluation>
     * @throws Exception
     */
    List<DoMSEvaluation> getMSEvaluations(String gid) throws Exception;

    /**
     * 获得面试组
     *
     * @param gid 计划编排分组ID
     * @return List<DoMSExaminer>
     * @throws Exception
     */
    List<DoMSExaminer> getMSExaminers(String gid) throws Exception;

    /**
     * 社会招聘应聘者评分分页信息
     *
     * @param page    当前页
     * @param perpage 每页显示数
     * @param fid     招聘流程ID
     * @return Map
     */
    Map<String, Object> getSZPointUsers(int page, int perpage, String fid) throws Exception;

    /**
     * 高校校园招聘应聘者评分分页信息
     *
     * @param page    当前页
     * @param perpage 每页显示数
     * @param fid     招聘流程ID
     * @return Map
     */
    Map<String, Object> getGXPointUsers(int page, int perpage, String fid) throws Exception;

    /**
     * 内部招聘应聘者评分分页信息
     *
     * @param page    当前页
     * @param perpage 每页显示数
     * @param fid     招聘流程ID
     * @return Map
     */
    Map<String, Object> getNZPointUsers(int page, int perpage, String fid) throws Exception;

    /**
     * 中专校招应聘者评分分页信息
     *
     * @param page    当前页
     * @param perpage 每页显示数
     * @param fid     招聘流程ID
     * @return Map
     */
    Map<String, Object> getZZPointUsers(int page, int perpage, String fid) throws Exception;

    /**
     * 获得面试流程
     *
     * @param pid   招聘方案ID
     * @param ftype 流程类型（ProjectInfoFlow中的fid）
     * @return List<ProjectInfoFlow>
     */
    List<ProjectInfoFlow> getFlows(String pid, int ftype) throws Exception;

    /**
     * 获得招聘方案
     *
     * @param fid 招聘流程ID
     * @return ProjectInfo
     */
    ProjectInfo getProjectByFid(String fid) throws Exception;

    /**
     * 获得面试结果信息
     *
     * @param msuid DoMSUser的ID
     * @param code  考官编号
     * @return DoMSResult
     */
    DoMSResult getMsResult(String msuid, String code) throws Exception;

    /**
     * 获得面试结果详细信息
     *
     * @param msrid DoMSResult的ID
     * @return List<DoMSResultDetail>
     */
    List<DoMSResultDetail> getMSResultDetail(String msrid) throws Exception;

    /**
     * 获得面试官
     *
     * @param gid   计划编排分组ID
     * @param ucode 面试官编号
     * @return List<DoMSExaminer>
     * @throws Exception
     */
    DoMSExaminer getExaminer(String gid, String ucode) throws Exception;

    /**
     * 获得面试结果信息
     *
     * @param msuid DoMSUser的ID
     * @param code  考官编号(除去本考官)
     * @return List<DoMSResult>
     */
    List<DoMSResult> getMsResultNoMe(String msuid, String code) throws Exception;

    /**
     * 获得面试结果信息
     *
     * @param msuid DoMSUser的ID
     * @return List<DoMSResult>
     */
    List<DoMSResult> getMsResults(String msuid) throws Exception;

    /**
     * 获得已经安排面试的人数
     *
     * @param fid 流程ID
     * @return Integer
     */
    int getMsCount(String fid) throws Exception;

    /**
     * 获得已经安排素质测试的人数
     *
     * @param fid 流程ID
     * @return Integer
     */
    int getSsCount(String fid) throws Exception;

    /**
     * 查询面试批次
     * @param page 页数
     * @param perpage 当前页
     * @param mspch 批次号
     * @param pname 方案名称
     * @param recruittype 方案类型
     * @param jname 岗位名称
     * @param msaddress 面试地址
     * @param msstarttime 面试时间
     * @param cardno 面试人身份证号
     * @param name 面试人姓名
     * @return
     * @throws Exception
     */
    Map<String,Object> queryMsBatch(int page, int perpage, String mspch,String pname,String recruittype,String jname,String msaddress,String msstarttime,String cardno,String name,String filename) throws Exception;

    /**
     * 查询面试批次人员
     * @param page 页数
     * @param perpage 当前页
     * @param mspch 批次号
     * @param pname 方案名称
     * @param recruittype 方案类型
     * @param jname 岗位名称
     * @param msaddress 面试地址
     * @param msstarttime 面试时间
     * @param cardno 面试人身份证号
     * @param name 面试人姓名
     * @return
     * @throws Exception
     */
     Map<String,Object> queryMsBatchUser(int page, int perpage, String mspch,String pname,String recruittype,String jname,String msaddress,String msstarttime,String cardno,String name,String filename) throws Exception;


    /**
     * 查询面试批次附件
     * @param page 页数
     * @param perpage 当前页
     * @param mspch 批次号
     * @param pname 方案名称
     * @param recruittype 方案类型
     * @param jname 岗位名称
     * @param msaddress 面试地址
     * @param msstarttime 面试时间
     * @return
     * @throws Exception
     */
    Map<String,Object> queryMsBatchFile(int page, int perpage, String mspch,String pname,String recruittype,String jname,String msaddress,String msstarttime,String filename) throws Exception;

    void  UploadMsBacthFile(DoMsEnclosure enclosure) throws Exception;

    DoMsEnclosure  getMsBatchFile(String id) throws Exception;

    List getMsTimse(String pid) throws  Exception;

    List getMsAddresss(String pid) throws  Exception;
}
